#include<bits/stdc++.h>
using namespace std;
struct node{
	int left;
	int right;
};
node a[1000100];
int n;
int depth = 0;
void dfs(int root , int dep){
	if(root == 0){
		return;
	}
	depth = max(depth , dep);
	dfs(a[root].left , dep + 1);
	dfs(a[root].right , dep + 1);
}
int main(){
	cin >> n;
	for(int i = 1 ; i <= n ; i++){
		cin >> a[i].left >> a[i].right;
	}
	dfs(1 , 1);
	cout << depth;
	return 0;
}
